import streamlit as st
import pandas as pd
import requests

st.set_page_config(page_title="通义千问 · 数据智能分析", layout="wide")
st.title("📊 通义千问 · 数据智能分析助手")

st.markdown("""
上传一个 `.csv` 文件，我会用阿里的通义千问大模型自动帮你分析数据，并输出结论 ✨
""")

api_key = st.text_input("🔑 请输入你的通义千问 API Key", type="password")

uploaded_file = st.file_uploader("📂 上传 CSV 文件", type=["csv"])

if uploaded_file and api_key:
    try:
        df = pd.read_csv(uploaded_file)

        st.subheader("🧾 原始数据预览")
        st.dataframe(df, use_container_width=True)

        # 将表格转成 markdown 供大模型阅读
        table_markdown = df.to_markdown(index=False)
        prompt = f"""以下是一个表格数据，请帮我做数据分析，包括总体趋势、最大最小值、相关性、建议等：
{table_markdown}请用中文输出清晰完整的分析结论，不要省略细节。"""

        st.subheader("🧠 正在调用通义千问进行智能分析...")
        with st.spinner("模型思考中，请稍候..."):
            url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation"
            headers = {
                "Authorization": f"Bearer {api_key}",
                "Content-Type": "application/json"
            }
            payload = {
                "model": "qwen-turbo",
                "input": {
                    "prompt": prompt
                },
                "parameters": {
                    "result_format": "message"
                }
            }

            response = requests.post(url, headers=headers, json=payload)
            st.json(response.json())
            if response.status_code == 200:
                result_text = response.json()['output']['choices'][0]['message']['content']
                st.success("🎉 分析完成！")
                st.subheader("📋 通义千问分析结果")
                st.markdown(result_text)
            else:
                st.error("❌ 请求失败，请检查 API Key 或数据格式")
                st.text(response.text)

    except Exception as e:
        st.error("文件读取或分析失败，请检查 CSV 格式")
        st.exception(e)

elif not uploaded_file:
    st.info("请上传一个 CSV 文件。")
elif not api_key:
    st.info("请输入你的通义千问 API Key。")